package sanrenxing.student.dao;



import sanrenxing.student.domain.Student;
import sanrenxing.student.domain.StudentDo;
import sanrenxing.student.domain.StudentTo;

import java.util.List;

/**
 * @description：Student表的数据层接口
 * @auth：yidu
 * @date:2020/8/25 0025 - 9:00
 * @version:1.0
 */
public interface StudentDao {
    /**
     * 将学生实体对象添加到数据库Studen表中
     * @param student 学生对象
     * @return 成功添加的行数(1:添加成功;0:添加失败)
     */
    public int add(Student student);

    /**
     * 根据学生编号主键从数据库student表中删除指定学生数据
     * @param stuId 学生编号主键
     * @return 删除影响的行数(1:删除成功;0:删除失败)
     */
    public int delete(String stuId);

    /**
     * 将学生对象数据修改到数据库Student表中
     * @param studentDo 学生对象
     * @return 修改影响的行数(1:修改成功;0:修改失败)
     */
    public int update(StudentDo studentDo);

    /**
     * 根据学生编号主键从数据库Student表中查找单个学生
     * @param stuId 学生编号主键
     * @return 学生对象(如果返回null值，表示查找失败)
     */
    public Student findById(String stuId);

    /**
     * 查询数据库Student表中所有学生
     * @return 学生对象集合
     */
    public List<Student> findAll();

    /**
     * 从数据库student表中查询指定页的学生对象集合
     * @param rows 每页的学生行数
     * @param pages 页数
     * @return 当前页的学生对象集合
     */
    public List<Student> findByPage(int rows, int pages);

    /**
     * 统计数据库student表中记录总数
     * @return 学生表中记录总数
     */
    public int count();

    /**
     * 条件分页查询
     * @param rows 每页行数
     * @param pages 页数
     * @param condition 条件
     * @return 学生对象集合
     */
    public List<StudentTo> findByPage(int rows, int pages, String condition);

    /**
     * 条件统计
     * @param condition 条件
     * @return 学生数
     */
    public int count(String condition);

    /**
     * 获取查询条件
     * @param student 学生对象
     * @return 条件字符串
     */
    public String getCondition(Student student);

    /**
     * 通过班级名称查询班级id
     * @param className
     * @return
     */
    public int findClassName(String className);

    /**
     * 通过班级名称查询班级人数且每运行一次添加1个人数
     * @param className
     * @return
     */
    public int addClassCount(String className);

    /**
     * 通过班级编号查询班级名称
     * @param classId
     * @return
     */
    public String findClassId(int classId);

    /**
     * 通过学员编号查询班级编号
     * @param stuId
     * @return
     */
    public int findclassId(String stuId);
    /**
     * 通过班级名称查询班级人数且每运行一次删除1个人数
     * @param className
     * @return
     */
    public int deleteClassCount(String className);

    /**
     * 通过班级编号修改对应班级人数
     * @param classId
     */
    public void updateClassCount(int classId);
}
